﻿using System;

namespace LAPI.Business.Acciones
{
    /// <summary>
    /// Clase para realizar la acción: Obtener los deportes activos para el servicio.
    /// </summary>
    public class AccGetDeportes
    {
        /// <summary>
        /// Logger de la clase
        /// </summary>
        private LAPI.Core.Logging.ILogger logger;

        /// <summary>
        /// Constructor
        /// </summary>
        public AccGetDeportes()
        {
            logger = LAPI.Core.Logging.LoggerFactory.CreateLogger(type: typeof(AccGetDeportes));
        }

        /// <summary>
        /// El método realiza las siguientes funciones:
        /// <ul>
        /// <li>Obtiene un listado de los deportes activos
        /// </ul>
        /// </summary>
        /// <returns>Colección con los deportes activos</returns>
        /// <seealso cref="Deporte"/>
        /// <seealso cref="GestorDeportes"/>
        public System.Collections.Generic.List<LAPI.Data.Model.Deporte> GetDeportes()
        {
            logger.Debug("[GetDeportes] Comienzo");

            System.Collections.Generic.List<LAPI.Data.Model.Deporte> result = new System.Collections.Generic.List<Data.Model.Deporte>();
            try
            {
                Gestores.GestorDeportes oGestor = new Gestores.GestorDeportes();
                result = oGestor.ObtenerActivos();
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }
            logger.Debug("[GetDeportes] Fin");

            return result;
        }

        /// <summary>
        /// El método realiza las siguientes funciones:
        /// <ul>
        /// <li>Obtiene un listado de los deportes disponibles en un centro deportivo
        /// </ul>
        /// </summary>
        /// <param name="IdCentroDeportivo">Identificador único del centro deportivo</param>
        /// <returns>Colección con los deportes disponibles</returns>
        /// <seealso cref="Deporte"/>
        /// <seealso cref="GestorDeportes"/>
        public System.Collections.Generic.List<LAPI.Data.Model.Deporte> GetDeportes(Int32 IdCentroDeportivo)
        {
            logger.Debug("[GetDeportes] Comienzo. IdCentroDeportivo: " + IdCentroDeportivo);

            System.Collections.Generic.List<LAPI.Data.Model.Deporte> result = new System.Collections.Generic.List<Data.Model.Deporte>();
            try
            {
                Gestores.GestorDeportes oGestor = new Gestores.GestorDeportes();
                result = oGestor.ObtenerPorCentroDeportivo(IdCentroDeportivo: IdCentroDeportivo);
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }
            logger.Debug("[GetDeportes] Fin. IdCentroDeportivo: " + IdCentroDeportivo);

            return result;
        }
    }
}
